package com.wangyu.talents.core.service;

import com.wangyu.talents.core.entity.Page;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 通用服务层
 *
 * @author wangyu
 * @Date 2018-09-02 12:05
 */
public interface BaseService<T> {

  /**
   * 获取单条数据
   */
  T get(Serializable id);

  /**
   * 获取单条数据
   */
  T get(T entity);

  /**
   * 获取单条数据
   */
  T findOne(Map<String, Object> map);

  /**
   * 查询列表数据
   */
  List<T> findList(Map<String, Object> map);

  /**
   * 查询所有数据
   */
  List<T> findAll();

  /**
   * 查询列表数据,根据数据ids
   */
  List<T> findByIds(Long[] ids);

  /**
   * 查询分页数据
   *
   * @param page 分页对象
   */
  Page<T> findList(Page<T> page);


  /**
   * 统计个数
   */
  long countNums(Map<String, Object> map);

  /**
   * 插入数据
   */
  int insert(T entity);

  /**
   * 更新数据
   */
  int update(T entity);

  /**
   * 删除数据
   */
  int delete(T entity);

  /**
   * 删除数据
   */
  int delete(Serializable id);


  /**
   * 批量删除
   */
  int batchDelete(Long[] ids);
}
